package com.ww.springboot.boot.algorithm.leetcode1;

/**
 * 描述：
 * Alice 和 Bob 玩一个游戏，两人轮流行动，Alice 先手 。
 * <p>
 * 给你一个 偶数长度 的字符串 num ，每一个字符为数字字符或者 '?' 。每一次操作中，如果 num 中至少有一个 '?' ，那么玩家可以执行以下操作：
 * <p>
 * 选择一个下标 i 满足 num[i] == '?' 。
 * 将 num[i] 用 '0' 到 '9' 之间的一个数字字符替代。
 * 当 num 中没有 '?' 时，游戏结束。
 * <p>
 * Bob 获胜的条件是 num 中前一半数字的和 等于 后一半数字的和。Alice 获胜的条件是前一半的和与后一半的和 不相等 。
 * <p>
 * 比方说，游戏结束时 num = "243801" ，那么 Bob 获胜，因为 2+4+3 = 8+0+1 。如果游戏结束时 num = "243803" ，那么 Alice 获胜，因为 2+4+3 != 8+0+3 。
 * 在 Alice 和 Bob 都采取 最优 策略的前提下，如果 Alice 获胜，请返回 true ，如果 Bob 获胜，请返回 false 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/sum-game
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author 🧑 ‍wanwei
 * @since 2023-01-17 10:01
 */
public class CV1927 {

    public static void main(String[] args) {
        //最优策略 B:每次操作都让左右已有的值和差距越小 A:每次操作都让左右已有的值和差距越大
        //B 并不一定每次都要选9 或 0 但是A肯定每次都是往差距更大的方向选9或0

        String num = "";

        System.out.println(sumGame(num));
    }


    public static boolean sumGame(String num) {
        //左边总数
        int totalLeft = 0;
        //右边总数
        int totalRight = 0;
        //左边的问号数
        int xLeft = 0;
        //右边的问号数
        int xRight = 0;
        for (int i = 0; i < num.length(); i++) {
            if (i < num.length() / 2) {
                if (num.charAt(i) != '?') {
                    totalLeft += num.charAt(i) - 48;
                } else {
                    xLeft++;
                }
            } else {
                if (num.charAt(i) != '?') {
                    totalRight += num.charAt(i) - 48;
                } else {
                    xRight++;
                }
            }
        }
        //A先手


        return true;
    }
}
